<?php

class ZFKiller_Msg {
	const MSG_ERROR = 'error';
	const MSG_INFO = 'info';
	const MSG_OK = 'ok';
	const MSG_WARN = 'warn';

	private static $_sessionNameSpace = 'ZFKiller_Msg';
	private static $_session;
	private static $_clearAfterRender = true;

	public function msg() {
		$session = self::getSession();
		$r = '';
		foreach ($session->msg as $msg) {
			$r .= '<div class="msg msg-' . $msg['type'] . '"><p>' . htmlspecialchars($msg['msg']) . '</p></div>';
		}

		if (self::$_clearAfterRender)
			$session->msg = array();

		return $r;
	}

	/**
	 * Adiciona mensagens para o usuário
	 *
	 * @param  string $type Tipo da mensagem (ok|error|warn|info)
	 * @param  string $msg Mensagem
	 * @return void
	 */
	public static function addMsg($msg, $type=self::MSG_OK) {
		$session = self::getSession();

		if (($type != self::MSG_INFO) and ($type != self::MSG_OK) and ($type != self::MSG_WARN))
			$type = self::MSG_ERROR;

		$session->msg[] = array('type' => $type, 'msg' => $msg);
	}

	/**
	 * @return Zend_Session_Namespace
	 */
	public static function getSession() {
		if (is_null(self::$_session)) {
			self::$_session = new Zend_Session_Namespace(self::$_sessionNameSpace);
			if (!isset(self::$_session->msg))
				self::$_session->msg = array();
		}
		return self::$_session;
	}

}